0. Avant -propos

Cette page sert à acquérir ou consolider les bases de programmation que vous avez dû aborder depuis la seconde. Ici on repart de zéro afin d'obtenir les compétences pour réussir en Python en Physique Chimie. Cette page contient :

Un environement de travail : installation et prise en main

Nous utiliserons principalement le logiciel Edupython, qui est déjà présent sur les ordinateurs du lycée 4.0 et très utilisé en mathématiques. Cependant nous aborderons aussi l'utilisation du notebook Jupyter

Avant toute chose, si ce n'est pas le cas nous allons installer la dernière version d'édupython, à l'aide de la capsule suivante:

Dans le cas où Edupython ne marcherait pas sur vos machines, vous pouvez réaliser l'ensemble des exercices dans la fenètre ci-dessous :

Pour une première prise en main d'édupython :

Pour une première prise en main d'un notebook Jupyter :

Affectation en Python

En programmation, nous avons besoin de stocker des éléments , de les mettre en mémoire. Pour cela , on procède à l'affectation d'une variable par une donnée.

Pour cela ilfaut commencer par donner un nom à la variable:

Puis on affecte:

En Python, l' affectation se réalise avec l'opérateur =

le script :

a=5
met en mémoire l'entier 5 dans la variable a

a=4.8
met en mémoire le réel 4,8 dans la variable a

a="easy"
met en mémoire la chaine de caractères "easy" dans la variable a

Que vaut a à la fin de ce script :

a=1
b=-1
a=a*b
a=a+b
			

Un exercice de renforcement, reprenant les mêmes compétences est dispoible directement en cliquant ci-dessous :

exercice de renforcement

Un exercice plus compliqué utilisant l'affectation :

Hervé Trézène aimerait avoir un algorithme permettant de permuter les nombres stockés dans deux variables $a$ et $b$. Pour simplifier, on suppose que la variable $a$ stocke le nombre 8, tandis que la variable $b$ stocke le nombre -3.

visualisation des boîtes
  1. Yves Aladaire propose l'algorithme suivant :

    # ceci est un commentaire (il commence par le symbole dièse #) : 
    # il n'est pas pris en compte par l'interpréteur, il n'est lu que par le programmeur et l'utilisateur : vous.
    # mémorisation des valeurs initiales :
    a=8
    b=-3
    # programme proposé par Yves pour la permutation du contenu :
    a=b
    b=a
                             
    1. Compléter sur une feuille la table d'exécution commencée ci-dessous, sans prendre en compte les lignes de commentaires :

      ligne numéro valeur stockée dans la variable $a$ valeur stockée dans la variable $b$
      4 8 rien
      ... ... ...
      ... ... ...
      ... ... ...
    2. Est-ce le programme proposé par Yves permet d'échanger les valeurs stockées dans les varaibles $a$ et de $b$ ?

  2. Amin Bhar propose l'algorithme suivant :

    # mémorisation des valeurs initiales :
    a=8
    b=-3
    # programme proposé par Roger pour la permutation du contenu :
    b=a
    a=b
                        
    1. Compléter sur une feuille la table d'exécution commencée ci-dessous, sans prendre en compte les lignes de commentaires :

      ligne numéro valeur stockée dans la variable $a$ valeur stockée dans la variable $b$
      ... ... ...
      ... ... ...
      ... ... ...
      ... ... ...
    2. Est-ce le programme proposé par Amine permet d'échanger les valeurs stockées dans les variables $a$ et de $b$ ?

  3. Proposer un programme qui permet d'échanger les valeurs stockées dans les variables $a$ et de $b$ ?

Affichage en python

Une chaîne de caractères correspond à un texte pouvant contenir différents symboles. En Python, une chaîne de caractères est le contenu délimité par "".

Pour afficher une chaine de caractères en Python on utilise la fonction print(), nous pouvons également utiliser cette fonction pour afficher le contenu d'une variable.

Testez ces différents scripts :

  1. print("Vive la Chimie !")
  2. temperature=22
    print(temperature)
  3. grandeur_abscisse="Volume"
    print("La grandeur en abscisse est:",grandeur_abscisse)

Réaliser un script qui contient deux variables : grandeur_x, grandeur_y et qui doit afficher :

"Nous allons tracer la courbe représentative de la vitesse en fonction du temps"

exercice de renforcement

Dialogue avec l'utilisateur

La fonction input() permet d'ouvrir une boite de dialogue et de récupérer une information saisie par l'utilisateur.

L'information récupérée grâce à un input() est une chaîne de caractères.

resultat=input("quelle est l'unité SI de vitesse?")
print(resultat)
		

Ecrire un script en Python qui demande à l'utilisateur, les grandeurs en abscisse et en ordonnée qui réalise un affichage comme dans l'exercice 3.

exercice de renforcement

Comme l'information récupérée grâce à un input est une chaîne de caractères, il va falloir changer le type de la variable pour permettre d'effectuer des calculs avec.

Mon professeur désire un programme qui demande à l'utilisateur de saisir la température en dégré celsius, puis qui affiche la tempérture en kelvin.
(rappel, pour convertir des degrés celsius en kelvin, il faut ajouter 273,15)

  1. Testez le script suivant :

    t_celsius=input("Saisir la température en degrés celsius")
    t_kelvin = t_celsius + 273.15
    print("La température en kelvin est de :"",t_kelvin)
  2. Quel message d'erreur obtenez-vous ?

  3. Testez le script suivant :

    t_celsius=float(input("Saisir la température en degrés celsius"))
    t_kelvin = t_celsius + 273.15
    print("La température en kelvin est de :"",t_kelvin)
  4. Quelle est la différence avec le code précédent de cet exemple ?

L'instruction int permet de changer certaines chaînes de caractères en un nombre entier.
L'instruction float permet de changer certaines chaînes de caractères en un flottant, c'est-à-dire un "nombre à virgule".

exercice de renforcement

Instruction conditionnelle en Python

Les tests en Python :

Chaque utilisation de ces tests renvoie une variable qui ne peut prendre que deux valeurs booléenne : True ou False ; On parle alors de booléen.

Attention à ne pas confondre :

exécutez le code suivant pour visualiser la différence entre affectation et test d'égalité :

La structure conditionnelle "if"

En Python, voici la structure :

if condition :
	instruction(s) à effectuer dans la cas où la condition est remplie
else :
	instruction(s) à effectuer dans la cas contraire

Le bloc else n'est pas obligatoire

Vous remarquerez le symbole : très important en Python qui marque le début d'un bloc.

C'est l'indentation (=décalage) qui délimite le bloc d'instructions.

temperature=float(input("Saisir la température en degré celsius : "))
if temperature>=0 :
    print("La température est positive ou nulle",temperature)
else :
    print("La température est négative",temperature)

Qu'affiche le programme de l'exemple dans chacun des cas suivants :

  1. Avec temperature=8 ?

  2. Avec temperature=-6 ?

  3. Avec temperature=0 ?

  4. Avec temperature="positif" ?

exercice de renforcement

Vous pouvez tester directement le programme précédent ci-dessous. En appuyant sur la touche Next>, vous visualiserez le fait que l'interpréteur du code ne traite que l'instruction du if ou celle du else suivant si la condition est remplie ou non.

Il est possible d'imbriquer plusieurs instructions conditionnelles ensemble.

On peut détailler l'exemple précédent ainsi en trois cas distinctions par imbrications de deux instructions conditionnelles :

temperature=float(input("Saisir la température en degré celsius : "))
if temperature>0:
    print("La température est positive",temperature)
else: # ici, on est dans le cas où temperature<= 0
    if temperature==0:
        print("La température est nulle",temperature)
    else: # ici, on est dans le cas où temperature<=0 et a!=0 donc où a<0
        print("La température est négative",temperature)
                

Il est possible de simplifier l'écriture de ces imbrication en utilisant le mot clé elif qui est la contraction de else if.

La structure elif :

if condition1 :
	instruction(s)
elif condition2 :
	instruction(s)
elif condition3 :
	instruction(s)
else :
	instruction(s)

On peut réécrire l'imbrication de l'exemple précédent ainsi :

temperature=float(input("Saisir la température en degré celsius : "))
if temperature>0:
    print("La température est positive",temperature)
elif temperature==0:
    print("La température est nulle",temperature)
else: 
    print("La température est négative",temperature)
                

exercice de renforcement

Boucle itérative : pour/for

La structure "for" avec range

Voici la structure en Python d'une boucle répétitive for avec range

for i in range(n):
	instruction 1
	instruction 2
	...
	

Dans cette boucle $i$ prendra les valeurs de 0 à $n-1$.

Toutes les instructions dans la boucle seront appliquées pour chaque valeur de $i$.

Dans cette structure, on connait à l'avance le nombre de répétitions. Dans notre cas, il est égal à $n$.

Cette boucle affiche la valeur de i à chaque tour de boucle

# boucle effectuant 10 tours  
for i in range(10):
    print ("Pour ce tour de boucle i vaut:",i)

Vérifier que le résultat affiché correspond bien à i allant de 0 à 9 et qu'il y a bien 10 tours de boucle

Vous pouvez visualiser les différentes étapes mises en oeuvre par cet algorithme ci-dessous :

Plus généralement, lors de l'instruction for i in range(m,n), où m et n sont deux entiers tels que n>m, i prend toutes les valeurs entières entre m et n-1.

Écrire un script qui calcule la moyenne de 10 températures saisies par l'utilisateur

exercice de renforcement

exercice de renforcement

Boucle itérative : while

La structure while

Voici la structure en Python d'une boucle while

while condition:
	instruction 1
	instruction 2
	...

Tant que la condition est vraie les instructions du bloc sont exécutées.

Dans cette structure, on ne connait pas à l'avance le nombre de répétitions.

Deux écueils à éviter :

exercice de renforcement

Exercices de renforcement

Sur l'affectation

Quel nombre est stcokée dans la variable $a$ à la fin de ce script :

a=5
a=2*a
b=2*a
a=a*a 
a=a-b+1
			

Pour accéder au code de la correction : lien

Sur l'affichage

Pour accéder au code de la correction : lien

Sur la saisie

Pour accéder au code de la correction : lien

Pour accéder au code de la correction : lien

Sur l'instruction conditionnelle

Pour accéder au code de la correction : lien

Pour accéder au code de la correction : lien

Sur la boucle répétitive for

Pour accéder au code de la correction : lien

Pour accéder au code de la correction : lien

Pour accéder au code de la correction : lien

Sur la boucle répétitive conditionnelle while

Pour accéder au code de la correction : lien